This document relates to analyzing input/output (I/O) traces for applications executing on virtual machines.
A virtual machine (VM) is a software-based abstraction of a physical computer system. A VM is executed on a physical computer through the use of virtualization software typically referred to as a “hypervisor.” A physical computer system, referred to herein as a physical machine, can execute one or more VMs. The hypervisor is software that is logically interposed between and interfaces with a VM and a physical computer system. In general, each VM is configured to execute an operating system, referred to herein as a guest OS, and applications.
Some existing systems are configured to generate I/O traces for applications executing on virtual machines. An I/O trace for a given application includes data identifying I/O requests and characteristics for each of the I/O requests. The characteristics of the I/O requests that are included in the I/O trace can include the time that each I/O request was submitted, the logical block requested to be written to or read from by the I/O request, and so on. Some systems make use of the I/O trace by replaying the I/O requests identified in the trace in order to evaluate the performance of computing resources. However, traces for certain kinds of workloads can be very large and, in some scenarios, e.g., when multiple traces are replayed in parallel, transmitting and processing the traces can be difficult.
The details of one or more embodiments of the subject matter described in this document are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the subject matter will become apparent from the description, the drawings, and the claims.
Like reference numbers and designations in the various drawings indicate like elements.